#ifndef GAMECONTROLLER_H
#define GAMECONTROLLER_H

#include "Controller.h"
#include "GameView.h"
#include "Headers.h"
#include "Exception.h"
#include "FileHandler.h"
#include "ChessBoardController.h"
#include "ChessPanelRecController.h"
#include "Scanner.h"
#include "Parser.h"
#include "Console.h"
#include "Generator.h"
#include "GamesHistory.h"
#include "Simulation.h"

class GameController : public QObject, public Controller
{
    Q_OBJECT
private:
    ChessBoardController * chessBoardController;
    ChessPanelRecController * chessPanelRecController; //Do zapisu rozgrywki
    GameView * gameView;
    GamesHistory * gameHistory;
    GamesHistory * history; //tmp
    Simulation * simulation;
public:
    GameController(QWidget * parent = 0);
    ~GameController();

    virtual void start();

    void loadGamesFromFile(const QString & fileName);

public slots:
    void setCurrentGame(int index);
    void reset();
};

#endif // GAMECONTROLLER_H
